package br.upis.criacional.factory.method.Montadora.Abstrato;

import br.upis.criacional.factory.method.Montadora.Enum.Acessorios;

public class Carro {

	private String nome;
	private String cor;
	private Acessorio farol;
	private Acessorio pneu;
	private Acessorio banco;
	private Acessorio espelho;
	private boolean carroOk;

	protected Carro(String nome, String cor,
			FabricaDeAcessorios fabricaDeFarol,
			FabricaDeAcessorios fabricaDePneu,
			FabricaDeAcessorios fabricaDeBanco,
			FabricaDeAcessorios fabricaDeEspelho){
		this.nome = nome;
		this.cor = cor;
		this.farol = fabricaDeFarol.criarAcessorio(Acessorios.FAROL);
		this.pneu = fabricaDePneu.criarAcessorio(Acessorios.PNEU);
		this.banco = fabricaDeBanco.criarAcessorio(Acessorios.BANCO);
		this.espelho = fabricaDeEspelho.criarAcessorio(Acessorios.ESPELHO);
		carroOk = true;
	}
	
	protected Carro(String nome, String cor, FabricaDeAcessorios fabrica){
		this.nome = nome;
		this.cor = cor;
		this.farol = fabrica.criarAcessorio(Acessorios.FAROL);
		this.pneu = fabrica.criarAcessorio(Acessorios.PNEU);
		this.banco = fabrica.criarAcessorio(Acessorios.BANCO);
		this.espelho = fabrica.criarAcessorio(Acessorios.ESPELHO);
		carroOk = true;
	}

	public String getNome() {
		return nome;
	}

	public String getCor() {
		return cor;
	}
	
	public Acessorio getFarol() {
		return farol;
	}

	public Acessorio getPneu() {
		return pneu;
	}
	
	public Acessorio getBanco() {
		return banco;
	}

	public Acessorio getEspelho() {
		return espelho;
	}
	
	public boolean getCarroOk(){
		return carroOk;
	}

	public void verificarItens(){
		System.out.println("Verificando Itens: ");
		System.out.println("Nome: " + nome + " : OK");
		System.out.println("Cor: " + cor + " : OK");
	}
	
}
